package com.stillalive.springbootbooksystem.config;

import com.stillalive.springbootbooksystem.Model.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.lang.reflect.Executable;

@Slf4j
@ControllerAdvice
@ResponseBody
// 对异常统一处理
// 如果抛出了一个异常次数没有与之最为匹配的，会逐层向上抛，默认匹配离他最近的
public class ErrorAdvice {
    @ExceptionHandler
    public Result handler(Exception e) {
        log.error("发生异常：e:" + e);
        return Result.fail("内部错误，请联系管理员");
    }
    @ExceptionHandler(NullPointerException.class)
    public Result handler1(Exception e) {
        log.error("发生异常， e" + e);
        return Result.fail("发生空指针异常，请联系管理员");
    }
    @ExceptionHandler(ArrayIndexOutOfBoundsException.class)
    public Result handler2(Exception e) {
        log.error("发生异常， e" + e);
        return Result.fail("发生数组越界异常，请联系管理员");
    }
}
